CodeIgniter-এর Pagination Class ব্যবহার করে বড় ডেটাসেটকে পৃষ্ঠাভিত্তিক বিভক্ত করে প্রদর্শন করা যায়। এটি ডেটাবেস থেকে রেকর্ড ফিল্টার এবং ডায়নামিক পেজ লিংক তৈরিতে সহায়ক।
Controller-এ Pagination সেটআপ এবং ডেটা লোড করার কোড লিখতে হবে।
<?php
namespace App\Controllers;
use App\Models\ProductModel;
class ProductController extends BaseController
{
public function index()
{
$productModel = new ProductModel();
// Pagination কনফিগারেশন
$data['products'] = $productModel->paginate(10); // প্রতি পৃষ্ঠায় ১০টি রেকর্ড
$data['pager'] = $productModel->pager; // Pagination লিংক তৈরির জন্য
return view('product_list', $data);
}
}
Pagination লিংক এবং ডেটা প্রদর্শনের জন্য View ফাইল তৈরি করতে হবে।
app/Views/product_list.php
ফাইল:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Product List</title>
</head>
<body>
<h1>Product List</h1>
<ul>
<?php if (!empty($products)): ?>
<?php foreach ($products as $product): ?>
<li><?= esc($product['name']); ?> - <?= esc($product['price']); ?></li>
<?php endforeach; ?>
<?php else: ?>
<li>No products found.</li>
<?php endif; ?>
</ul>
<!-- Pagination লিংক -->
<?= $pager->links(); ?>
</body>
</html>
Pagination পরিচালনার জন্য Model তৈরি করতে হবে।
app/Models/ProductModel.php
ফাইল:
<?php
namespace App\Models;
use CodeIgniter\Model;
class ProductModel extends Model
{
protected $table = 'products';
protected $primaryKey = 'id';
protected $allowedFields = ['name', 'price'];
}
Pagination-এর চেহারা এবং কার্যকারিতা কাস্টমাইজ করতে app/Config/Pager.php
ফাইলটি ব্যবহার করতে পারেন।
public $defaultFull = [
'full_tag_open' => '<nav><ul class="pagination">',
'full_tag_close' => '</ul></nav>',
'first_tag_open' => '<li>',
'first_tag_close'=> '</li>',
'last_tag_open' => '<li>',
'last_tag_close' => '</li>',
'next_tag_open' => '<li>',
'next_tag_close' => '</li>',
'prev_tag_open' => '<li>',
'prev_tag_close' => '</li>',
'cur_tag_open' => '<li class="active"><a href="#">',
'cur_tag_close' => '</a></li>',
'num_tag_open' => '<li>',
'num_tag_close' => '</li>',
];
Pagination লিংক কাস্টমাইজ করতে $pager->makeLinks()
ব্যবহার করতে পারেন।
<?= $pager->makeLinks($currentPage, $perPage, $total, 'bootstrap_full'); ?>
Bootstrap ক্লাস ব্যবহার করে Pagination লিংক স্টাইলিং করা যায়।
public $defaultFull = [
'full_tag_open' => '<ul class="pagination">',
'full_tag_close' => '</ul>',
'first_tag_open' => '<li class="page-item">',
'first_tag_close'=> '</li>',
'last_tag_open' => '<li class="page-item">',
'last_tag_close' => '</li>',
'next_tag_open' => '<li class="page-item">',
'next_tag_close' => '</li>',
'prev_tag_open' => '<li class="page-item">',
'prev_tag_close' => '</li>',
'cur_tag_open' => '<li class="page-item active"><a class="page-link" href="#">',
'cur_tag_close' => '</a></li>',
'num_tag_open' => '<li class="page-item">',
'num_tag_close' => '</li>',
'attributes' => ['class' => 'page-link'],
];
public function index()
{
$productModel = new ProductModel();
$data['products'] = $productModel->paginate(10);
$data['pager'] = $productModel->pager;
return view('product_list', $data);
}
<ul>
<?php foreach ($products as $product): ?>
<li><?= esc($product['name']); ?> - <?= esc($product['price']); ?></li>
<?php endforeach; ?>
</ul>
<?= $pager->links(); ?>
<?php
namespace App\Models;
use CodeIgniter\Model;
class ProductModel extends Model
{
protected $table = 'products';
protected $primaryKey = 'id';
protected $allowedFields = ['name', 'price'];
}
CodeIgniter-এ Pagination Class ব্যবহার করে বড় ডেটাসেটকে পৃষ্ঠাভিত্তিক বিভক্ত করা সহজ। Default Pagination, Custom Pagination, এবং Bootstrap Styling ব্যবহার করে এটি আরও কার্যকর ও আকর্ষণীয় করা যায়।